package io.github.frailty9.crserver.dso.service;

import io.github.frailty9.crserver.dto.AccountInfo
import io.github.frailty9.crserver.dto.RegisterDto

/**
 * AccountService
 */
interface AccountService {
    /**
     * 判断用户名是否存在
     * @param username 用户名
     * @return true: 存在, false: 不存在
     */
    fun isUsernameExists(username: String): Boolean

    /**
     * 注册用户
     * @param registerDto 注册信息
     */
    fun register(registerDto: RegisterDto)

    /**
     * 登录
     * @param username 用户名
     * @param password 密码
     * @return 成功返回用户全局id, 失败返回 0
     */
    fun login(username: String, password: String): Long

    /**
     * 修改密码
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return true: 修改成功, false: 修改失败
     */
    fun changePassword(uid: Long, oldPassword: String, newPassword: String): Boolean

    /**
     * 获取用户角色
     * @param id 用户id
     * @return 用户角色
     */
    fun getRole(id: Long): String

    /**
     * 获取所有账户信息
     * @return 所有账户信息
     */
    fun getAll(): List<AccountInfo>

    /**
     * 重置指定用户的密码
     * @param userId 用户id
     * @param defaultHashedPassword 已经加密好的默认密码
     */
    fun resetPassword(userId: Long, defaultHashedPassword: String)
}